/**
* \file IRenderPlugin.h
* \brief IRenderPlugin decleration class
* \author Edouard ROGE
* \date 13 Septembre 2014
*/
#ifndef _RENDERPLUGIN_
#define _RENDERPLUGIN_

#include "Core/Plugin/IPlugin.h"

namespace Core
{
	namespace Render
	{
		class IRenderContext;

		class IRenderPlugin : public Core::Plugin::IPlugin
		{
		public:

			/**
			* \fn virtual RenderContext * CreateContext() const = 0;
			* \return a newly created render context
			* \brief Create a render context
			*/
			virtual IRenderContext * CreateContext() const = 0;

			/**
			* \fn virtual void DestroyContext(IRenderContext * _pRenderContext) const = 0;
			* \param _pRenderContext Render context to destroy
			* \brief Destroy the context in parameter, created before by this plugin
			*/
			virtual void DestroyContext(IRenderContext * _pRenderContext) const = 0;
		};
	}
}

#endif // _RENDERPLUGIN_
